﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtocoloNameSpace;
using HTSwitchServerNamespace.DataMocks;
using Newtonsoft.Json;

namespace HTSwitchServerNamespace.ProtocolsNP
{
    public class Protocolo_IPhoneGPS_NP : IProtocol
    {

        #region MetodosDatosDispositivo IPhone Nueva Plataforma
        public bool ObteneryEnviarDatosDelDispositivo(string strMensajeDelDispositivo)
        {

            ControlHorseData objContext = new ControlHorseData();
            DataMockIPhoneNP objGPSIphoneData = new DataMockIPhoneNP();
            ar.com.controlyseguimiento.www.ControlYSeguimiento objContextControl = new ar.com.controlyseguimiento.www.ControlYSeguimiento();
            #region Deserializacion de datos
            ///EJEMPLO DE ENVIO {"Id":"BB","Lat":"-34.48894618571428","Lng":"-58.49734540000001","Alt":"0.0","Spe":"0.0","IMEI":"358306040470592","CodAct":"CYS2122","Batt":"80"}

            try
            {
                objGPSIphoneData = JsonConvert.DeserializeObject<DataMockIPhoneNP>(strMensajeDelDispositivo);
            }
            catch (Exception ex)
            {
                throw ex;

            }
            #endregion


            try
            {
                if ((objGPSIphoneData != null) && (objGPSIphoneData.IMEI != null) && (objGPSIphoneData.CodAct != null) && (objGPSIphoneData.Lat != null) && (objGPSIphoneData.Lng != null))
                {

                    #region Verificacion de plataforma externa
                    DatosPlataformaExt objDataPlataformaExt = new DatosPlataformaExt();
                    if ((objDataPlataformaExt = objContext.IsUsuarioPropio(objGPSIphoneData.IMEI)) != null)
                    {
                        if (objContext.EnviarDatosPlataformaExterna(objDataPlataformaExt, objGPSIphoneData.IMEI, objGPSIphoneData.Lat, objGPSIphoneData.Lng, objGPSIphoneData.Spe, objGPSIphoneData.Alt) == true)
                        {
                            //throw new Exception("***Usuario De otra Plataforma, Se enviaron los datos correctamente");
                            CLogger.Append("DATOS PLATAFORMA EXTERNA ENVIADOS CORRECTAMENTE", CLogger.INFO);
                            return true;
                        }
                        else
                        {
                            throw new Exception("ERROR IPhone NP ***Usuario De otra Plataforma, FALLO ENVIO DE DATOS");
                        }
                    }
                    #endregion


                    CLogger.Append("*************************NEW PLATFORM********************", CLogger.INFO);

                    #region UPDATE COORDENADAS EN NuEVA PLATAFORMA

                    if (objContextControl.UpdateCoordinatesV2(objGPSIphoneData.IMEI, objGPSIphoneData.CodAct, objGPSIphoneData.Lat, objGPSIphoneData.Lng, "0", objGPSIphoneData.Alt, objGPSIphoneData.Spe, objGPSIphoneData.Batt) == 0)
                    {
                        CLogger.Append("**NEW PLATFORM** IPhone NP Actualizo correctamente - IMEI:" + objGPSIphoneData.IMEI, CLogger.INFO);
                    }
                    else
                    {
                        CLogger.Append("**NEW PLATFORM** IMEI INVALIDO - IMEI:" + objGPSIphoneData.IMEI, CLogger.INFO);
                    }

                    #endregion

                }
                else
                {

                    CLogger.Append("**NEW PLATFORM** IPhone NP DATOS ENVIADOS INVALIDOS O VACIOS ", CLogger.INFO);
                    return false;
                }
            }
            catch (Exception ex)
            {
                //throw new Exception("ERROR EN VALIDACION O CREACION DE NUEVO USUARIO" + objGPSAndroidData.Mail);
                CLogger.Append("**NEW PLATFORM** IPhone NP ERROR Excepcion EN NUEVO VALIDATE: " + ex.Message, CLogger.ERROR);
            }

            return true;

        }
        #endregion
    }
}

